#include <stdio.h>
#include <stdlib.h>                                      // malloc() 需要 stdlib.h 库
#include "../../include/type_list.h"
#include "../common/func.h"
#include "create_linked_list.h"

void Mergelist_L (LinkList & La, LinkList & Lb, LinkList & Lc){

    //已知单链线性表 La 和 Lb 的元素按值非递减排列。
    //归并 La 和 Lb 得到新的单链线性表 Lc, Lc 的元素也按值非递减排列。
    LinkList pa = La -> next; 
    LinkList pb = Lb -> next;
    LinkList pc = La;
    Lc = pc;                                             //用 La 的头结点作为 Lc 的头结点

    while (pa && pb){
        if  (pa -> data <= pb -> data){
            pc -> next = pa; pc = pa; pa = pa-> next;    //这里 pc = pa 表示为 pc = pc -> next
        }
        else{
            pc-> next = pb; pc = pb; pb = pb -> next;
        }
    }
    pc -> next = pa ? pa : pb;                           //插人剩余段 
    free (Lb);                                           //释放 Lb 的头结点 
}//Mergelist_L
